#pragma once
#include "SFML\Graphics.hpp"
#include "InputManager.h"

class VisibleGameObject
{
public:
	VisibleGameObject();
	virtual ~VisibleGameObject();

	virtual void Load(std::string filename);

	virtual float GetWidth() const;
	virtual float GetHeight() const;

	virtual void Draw(sf::RenderWindow& window);
	virtual void Update(float elapsedTime);
	virtual void Pause(bool isPaused);

	virtual sf::Rect<float> GetBoundingRect() const;

	virtual void SetPosition(float x, float y);
	virtual sf::Vector2f GetPosition() const;
	virtual bool IsLoaded() const;
	virtual bool IsPaused() const;

protected:
	sf::Sprite& GetSprite();

private:
	sf::Sprite _sprite;
	sf::Texture _texture;
	std::string _filename;
	bool _isLoaded;
	bool _isPaused;
};

class CollidableObject
	: public VisibleGameObject
{
public:
	virtual void collideWith(CollidableObject* collisionObject) {};
};